Skip to content

feat: metadata CRUD, form dialog, detail page, registry extensions, actions & permissions#1188

Merged
xuyushun441-sys merged 5 commits intomainfrom
copilot/fix-254823548-1133319012-7b5d238a-59c4-4340-9057-4e002830fc7e
Apr 7, 2026
Merged

feat: metadata CRUD, form dialog, detail page, registry extensions, actions & permissions#1188
xuyushun441-sys merged 5 commits intomainfrom
copilot/fix-254823548-1133319012-7b5d238a-59c4-4340-9057-4e002830fc7e

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 7, 2026

MetadataManagerPage only supported list + delete. This adds full CRUD, a detail page, custom actions, role-based permissions, and the registry extensions needed to drive them.

Registry extensions (metadataTypeRegistry.ts)

  • New MetadataFormFieldDef type and formFields property on MetadataTypeConfig — standardizes create/edit form structure per type
  • New detailComponent property for custom detail renderers
  • New MetadataActionDef type and actions property for custom page-level and row-level action buttons (with scope: 'page' | 'row', variant, icon, handler)
  • DEFAULT_FORM_FIELDS constant (name, label, description) as fallback
  • formFields populated for dashboard, page, report entries

MetadataFormDialog (components/MetadataFormDialog.tsx)

  • Generic create/edit dialog driven by registry formFields
  • Supports text, textarea, select field types
  • Required validation, disabledOnEdit for immutable keys (e.g. name), loading state during submission
<MetadataFormDialog
  open={formOpen}
  onOpenChange={setFormOpen}
  mode="edit"
  typeLabel={config.label}
  formFields={config.formFields}
  initialValues={item}
  onSubmit={handleSave}
/>

MetadataManagerPage enhancements

  • Create: "New {Type}" button in header opens create dialog
  • Edit: Per-item edit button opens pre-filled edit dialog
  • Navigate: Card click navigates to detail page
  • Custom actions: Page-level actions rendered in header; row-level actions rendered per item card
  • Permissions: Create/edit/delete buttons hidden for non-admin users via useAuth() role check
  • All mutations via MetadataService.saveMetadataItem() with toast feedback, loading state, list refresh

MetadataDetailPage (pages/system/MetadataDetailPage.tsx)

  • Route: /system/metadata/:metadataType/:itemName (added to all 3 route blocks)
  • Displays item fields from registry config, edit via MetadataFormDialog
  • Supports custom renderers via detailComponent in registry
  • Permissions: Edit button hidden for non-admin users via useAuth() role check

Permission integration

  • Both MetadataManagerPage and MetadataDetailPage use useAuth() from @object-ui/auth to check user.role === 'admin'
  • Create, edit, and delete buttons are hidden for non-admin users
  • Matches the pattern used by UserManagementPage, RoleManagementPage, and other system pages

Tests

  • 38 new tests across 4 files (MetadataFormDialog: 15, MetadataDetailPage: 8, MetadataManagerPage: 8 new, metadataTypeRegistry: 7 new)
  • All 62 metadata-related tests pass

@vercel
Copy link
Copy Markdown

vercel Bot commented Apr 7, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
objectui-demo Ready Ready Preview, Comment Apr 7, 2026 4:05am
1 Skipped Deployment
Project Deployment Actions Updated (UTC)
objectui Ignored Ignored Apr 7, 2026 4:05am

Request Review

…sions

- Add MetadataFormDialog component for create/edit with registry-driven form fields
- Add Create button and Edit button to MetadataManagerPage
- Add MetadataDetailPage at /system/metadata/:metadataType/:itemName
- Extend MetadataTypeConfig with formFields, detailComponent
- Add formFields to dashboard, page, report registry entries
- Add DEFAULT_FORM_FIELDS constant for fallback
- Add routes for detail page in all three route blocks
- Add 30 new tests (MetadataFormDialog, MetadataDetailPage, create/edit flows)
- Update CHANGELOG.md

Agent-Logs-Url: https://github.com/objectstack-ai/objectui/sessions/c72f47f2-b9dd-4364-b613-535fb3b9d405

Co-authored-by: xuyushun441-sys <255036401+xuyushun441-sys@users.noreply.github.com>
Copilot AI changed the title [WIP] Update basic functionality and task list for MetadataManagerPage feat: metadata CRUD, form dialog, detail page, and registry extensions Apr 7, 2026
Copilot AI requested a review from xuyushun441-sys April 7, 2026 03:49
@xuyushun441-sys
Copy link
Copy Markdown
Contributor

@copilot 仔细评估是否完成了任务中要求的所有开发

- Add MetadataActionDef type and actions field to MetadataTypeConfig
- MetadataManagerPage renders page-level and row-level custom actions
- MetadataManagerPage and MetadataDetailPage use useAuth() to check admin role
- Create/edit/delete buttons hidden for non-admin users
- Add tests for permission integration and actions support
- Update CHANGELOG.md

Agent-Logs-Url: https://github.com/objectstack-ai/objectui/sessions/fdb1f248-f420-4b3f-b38e-7c2e71034ac4

Co-authored-by: xuyushun441-sys <255036401+xuyushun441-sys@users.noreply.github.com>
Copy link
Copy Markdown
Contributor Author

Copilot AI commented Apr 7, 2026

@copilot 仔细评估是否完成了任务中要求的所有开发

经过仔细评估,已补全了之前遗漏的 P2 任务,现在所有优先级的任务都已完成:

P0 - 基础功能

  • ✅ 新建按钮(Header 区域 "New {Type}" 按钮 → 弹出 MetadataFormDialog)
  • ✅ 编辑按钮(每条目右侧 Pencil 图标 → 弹窗预填表单)
  • ✅ MetadataFormDialog 组件(由 registry formFields 驱动)
  • ✅ MetadataService.saveMetadataItem 集成(toast + loading + 回调刷新)

P1 - 详情页

  • /system/metadata/:metadataType/:itemName 路由(3 个路由块均已添加)
  • ✅ MetadataDetailPage(展示详情 + 复用编辑弹窗)
  • detailComponent 自定义详情渲染

P1 - Registry 扩展

  • formFields 配置(dashboard / page / report 均已添加)

P2 - 可拓展能力 ✅ (commit a6873f9, 523c10d)

  • actions 字段 + MetadataActionDef 类型(支持 scope: 'page' | 'row' 自定义按钮)
  • ✅ MetadataManagerPage 渲染 page-level 和 row-level 自定义 action 按钮
  • ✅ 权限集成:useAuth() 检查 user.role === 'admin',非管理员隐藏 create/edit/delete,与 SystemObjectViewPage 模式一致
  • ⏭️ ObjectGrid 切换(标注为可选,暂不实施)

测试: 62 个测试全部通过(4 个文件)

Copilot AI changed the title feat: metadata CRUD, form dialog, detail page, and registry extensions feat: metadata CRUD, form dialog, detail page, registry extensions, actions & permissions Apr 7, 2026
@xuyushun441-sys xuyushun441-sys marked this pull request as ready for review April 7, 2026 04:06
@xuyushun441-sys xuyushun441-sys merged commit 7071bcb into main Apr 7, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

完善统一元数据管理页的基础功能与任务清单

2 participants